$(function () {
    // 要求1、点击a链接，显示和隐藏盒子
    $('#loginBox a').on('click', function () {
        // 第一个a链接被点击，隐藏第一个显示第二个
        $('#loginBox').hide();
        $('#regBox').show();
    })
    $('#regBox a').on('click', function () {
        // 第二个a标签，影藏第二个，显示第一个
        $('#loginBox').show();
        $('#regBox').hide();
    })

    // 需求二、定义校验规则
    // console.log (layui)导入 layui.all.js
    let form = layui.form; // 
    // 定义校验规则，使用的是form.verift()
        // 参数是对象，属性是校验名称，值是校验规则。值有两中形式，函数和数组
    form.verify({
        username: [
            // 属性是校验名称，值是校验规则。
            // 值有两中形式，函数和数组
            /^[a-zA-Z0-9]{1,10}$/,
            '密码必须1到10位数字和字母'
        ],
        pwd: [
            /^[a-zA-Z0-9]{6,12}$/,
            '密码必须6到12位数字和字母'
        ],
        // 确认密码的校验规则
        repwd:function(value) {
            // 判断
            let pwd = $('#regBox input[name = "password"]').val();
            if(pwd !== value){
                return '两次密码输入不一致，请重新输入！'
            }
        }
    })



    // 需求三、注册功能
    let layer = layui.layer;
    $('#formReg').on('submit',function(e) {
        // 阻止表单默认提交
        e.preventDefault()
        // 发送axios中的Ajax请求
        axios({
            method: 'POST',
            url: '/api/reguser',
            data: $(this).serialize(),
        }).then(res => {
            // console.log(res.data);
            // 判断返回值是否正确
            if(res.data.status !== 0){
                return layer.msg(res.data.message, {icon: 5});
                // return layer.msg(res.data.message);
            }
            // 成功后提示
            // alert('恭喜您，注册用户成功！')
            layer.msg('恭喜您，注册用户成功！', {icon: 6});
            // layer.msg('恭喜您，注册用户成功！')  
            // 切换到登录模块
            $('#regBox a').click();
            // 情况列表 - DOM元素中，有一个 reset()可以重置表单
            $('#formReg')[0].reset()
        })
    })

    // 需求4、登录功能
    $('#formLogin').on('submit',function(e) {
        // 阻止表单默认提交
        e.preventDefault();
        axios({
            method: 'POST',
            url: '/api/login',
            // axios中data参数，可以控制content-type属性的值
            data: $(this).serialize()   // a=1&b=2&c=3
        }).then(res => {

            // 判断
            if(res.data.status !== 0) {
                return layer.msg(res.data.message, {icon: 5});
            }
            // 成功提醒
            layer.msg('恭喜您，登录成功！', {icon: 6});
            localStorage.setItem('token',res.data.token);
            // 页面跳转 index.html
            location.href = '/index.html'
        });
    });

});